맨위로가기

빈 문자열

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

빈 문자열은 형식 언어 이론에서 길이가 0이고 어떤 기호도 포함하지 않는 문자열을 의미하며, 프로그래밍 언어에서는 다양한 방식으로 표현된다. 형식 언어에서 빈 문자열은 λ, Λ 또는 ε로 표기되며, 공집합 언어와는 구분된다. 프로그래밍 언어에서 빈 문자열은 널 참조와는 다르게 유효한 문자열로 취급되며, 문자열 비교 함수를 통해 동일한 것으로 인식된다. 빈 문자열은 기수법에서 0을 표현하거나 텍스트 파일의 빈 줄을 나타내는 데 사용될 수 있으며, 널 종료 문자열로 해석될 수도 있다.

더 읽어볼만한 페이지

  • 문자열 - 문자열 연결
    문자열 연결은 프로그래밍 언어에서 문자열을 결합하는 연산으로, `+` 연산자나 별도의 연산자를 사용하며, 런타임 또는 컴파일 시점에 수행될 수 있고, 형식 언어 이론으로 확장되어 음성 합성 등 다양한 분야에서 활용된다.
  • 문자열 - 문자열 검색 알고리즘
    문자열 검색 알고리즘은 텍스트에서 특정 문자열(패턴)을 찾는 알고리즘으로, KMP, 보이어-무어 등의 효율적인 알고리즘을 거쳐 다양한 방식으로 발전해 왔으며, 웹 검색 엔진, 생물 정보학 등 여러 분야에 응용되고 한국어 검색에서는 특별한 고려 사항이 필요하다.
  • 형식 언어 - 문자열
    문자열은 사람이 읽을 수 있는 텍스트를 저장하고 정보를 전달하거나 받는 데 사용되는 순서가 있는 문자들의 시퀀스로, 다양한 형태의 데이터를 표현하며 유한한 길이를 가지고, 프로그래밍 언어에서 기본 또는 복합 자료형으로 제공되고, 문자 집합과 인코딩 방식에 따라 표현 방식이 달라진다.
  • 형식 언어 - 튜링 기계
    튜링 기계는 앨런 튜링이 제시한 계산 모델로, 테이프 위에서 기계적으로 작동하며, 유한한 상태, 테이프, 헤드, 명령 표를 통해 작동하고, 계산 가능성과 알고리즘의 한계를 연구하는 데 사용된다.
빈 문자열

2. 형식 언어 이론에서의 빈 문자열

형식 언어에서 빈 문자열은 λ로 표기된다. (λ의 대문자인 Λ 또는 ε를 사용하는 경우도 있다). 빈 문자열은 길이가 0이며, 어떤 심볼도 포함하지 않고, 반드시 하나만 존재한다.

빈 문자열을 '''공집합 언어'''∅와 혼동하지 않도록 주의해야 한다. 공집합 언어는, 형식 언어(문자열의 집합)에서, 빈 문자열조차 포함하지 않는 공집합을 의미한다.

빈 문자열의 성질은 다음과 같다.


  • | \lambda \, | = 0: 빈 문자열의 길이는 0이다.
  • \lambda \, + s = s + \lambda \, = s: 어떤 문자열에 빈 문자열을 연결해도, 원래의 문자열과 같다. 빈 문자열은, 문자열 연결에서의 항등원이다 (어떤 문자 집합 Σ에서 자유 모노이드를 구성한다).
  • { \lambda \, }^R = \lambda \,: 빈 문자열은 반전해도 빈 문자열 그대로이다.
  • 사전식 순서에서는, 빈 문자열은 어떤 문자열보다 앞에 위치한다. 이는 빈 문자열이 가장 짧은 문자열이기 때문이다.[7]

3. 프로그래밍 언어에서의 빈 문자열

대부분의 프로그래밍 언어에서 문자열은 자료형으로 취급되며, 일반적으로 별개의 메모리 주소에 저장된다. 따라서 빈 문자열("")도 메모리에 저장될 수 있으며, 이는 널 포인터와는 다르다. 널 포인터는 아무 문자열도 가리키지 않는 상태를 의미한다.[3]

길이가 0인 문자열(빈 문자열)도 저장 형식에 따라 메모리가 필요할 수 있다. 형식 이론상으로는 빈 문자열이 하나뿐이지만, 실제 프로그래밍 환경에서는 메모리에 여러 개의 빈 문자열이 존재할 수 있다. 그러나 문자열 비교 함수는 이러한 빈 문자열들을 모두 같다고 판단한다.

빈 문자열은 유효한 문자열이며, 대부분의 문자열 연산에 사용될 수 있다. 일부 언어에서는 빈 문자열, 널 포인터, 정수 0, 부동 소수점 0, 부울 값 false, ASCIINUL 등을 유사하게 처리하기도 한다.

일반적으로 빈 문자열은 다른 문자열과 유사하게 표현된다. 널 종료 문자열을 사용하는 경우, 빈 문자열은 단일 널 문자로 표현된다.

오라클 데이터베이스에서는 빈 문자열과 널(SQL)을 구분하지 않는다.

3. 1. 다양한 프로그래밍 언어에서의 빈 문자열 표현

''''''
str()파이썬string.EmptyC#, 비주얼 베이직 닷넷String.make 0 -OCaml{}Tclcharacter(0)R""sC++ (2014 표준 이후)str()Python%{}
%()RubyString::new()[3]RustLuaSystem.String.Empty.NET 언어 전반 (C#의 string 및 VB.NET의 StringSystem.String에 대한 별칭)


3. 2. 빈 문자열 처리 시 주의사항

대부분의 프로그래밍 언어에서 빈 문자열은 널 포인터(또는 널 참조)와 구별되는데, 널 참조는 빈 문자열조차 포함하여 문자열을 전혀 가리키지 않기 때문이다.[3] 빈 문자열은 정당한 문자열이므로, 대부분의 문자열 연산이 정상적으로 작동한다.

C/C++의 표준 라이브러리에서 문자열 조작 함수 및 문자열 클래스에 널 포인터(`NULL` 또는 `nullptr`)가 전달된 경우의 동작은 정의되지 않으며, 통상적으로 프로그램이 비정상 종료되는 원인이 된다.[3]

일부 언어는 빈 문자열, 널 참조, 정수 0, 부동 소수점 숫자 0, 부울 값 false, ASCII 문자 NUL 등을 유사하게 처리하기도 한다.[3]

프로그래밍 언어별 빈 문자열 표현은 다음과 같다.

표현프로그래밍 언어
""C, C#, C++, Go, Haskell, Java, 자바스크립트, Julia, Lua, M, Objective-C (C 문자열), OCaml, Perl, PHP, Python, Ruby, Scala, 표준 ML, Swift, Tcl, Visual Basic .NET
''APL, Delphi, 자바스크립트, Lua, MATLAB, Pascal, Perl, PHP, Python, R, Ruby, 스몰토크, SQL
character(0)R
{\0}C, C++, Objective-C (C 문자열)
std::string()C++
""sC++ (2014 표준 이후)
@""Objective-C (상수 NSString 객체)
[NSString string]Objective-C (새로운 NSString 객체)
q(), qq()Perl
str()Python
%{}
%()
Ruby
String::new()Rust
string.EmptyC#, Visual Basic .NET
String.make 0 -OCaml
{}Tcl
Lua


4. 빈 문자열의 활용 예시

참조

[1] 학술지 String theory
[2] 문서 CSE1002 Lecture Notes – Lexicographic http://cs.fit.edu/~r[...]
[3] 웹사이트 String in std::string - Rust https://doc.rust-lan[...] 2022-11-30
[4] 웹사이트 空文字列(ヌル文字列)とは - 意味をわかりやすく - IT用語辞典 e-Words https://e-words.jp/w[...]
[5] 문서 2024-05
[6] 웹사이트 21.2 Validating Null and Empty Strings - Java Platform, Enterprise Edition: The Java EE Tutorial (Release 7) https://docs.oracle.[...]
[7] 문서 CSE1002 Lecture Notes - Lexicographic http://cs.fit.edu/~r[...]
[8] 웹사이트 Basic Syntax https://www.markdown[...] 2024-05-09



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com